package functional;

class Dog {
	String name;
	int age = -1;

	Dog() {
		name = "stray";
	}

	Dog(String nm) {
		name = nm;
	}

	Dog(String nm, int yrs) {
		name = nm;
		age = yrs;
	}
}

interface MakeNoArgs {
	Dog make();
}

interface Make1Arg {
	Dog make(String nm);
}

interface make2Args {
	Dog make(String nm, int age);
}

public class CtorReference {
	public static void main(String[] args) {
		MakeNoArgs mna = Dog::new;
		Make1Arg m1a = Dog::new;
		make2Args m2a = Dog::new;
		mna.make();
		m1a.make("Comet");
		m2a.make("Ralph", 4);
	}
}
